package com.uoko.common.thread;

/**
 * <p>
 * 通用的忙等待类,可以用来做锁也可以用来做异步等待其他线程完成。
 * </p>
 *
 * @author chenyingchun
 * Email qiaohai@uoko.com
 * created by 2018/6/6 0006
 */
public class WaitNotify {
	/**
	 * 等待
	 */
	public synchronized void doWait() {
		// synchronized (this) {
		try {
			this.wait();
		} catch (InterruptedException e) {
			/** 出现唤醒异常 **/
		}
		// }
	}

	/**
	 * 等待
	 */
	public synchronized void doWait(Long timeout) {
		// synchronized (this) {
		try {
			this.wait(timeout);
		} catch (InterruptedException e) {
			/** 出现唤醒异常 **/
		}
		// }
	}

	/**
	 * 唤醒
	 */
	public synchronized void doNotify() {
		// synchronized (this) {
		this.notify();
		// }
	}

	/**
	 * 静态创建的工具方法
	 * 
	 * @return
	 */
	public static WaitNotify createWaitNotify() {
		return new WaitNotify();
	}
}
